﻿<!DOCTYPE html>
<html>

<head lang="en">
    <meta charset="UTF-8">
    <title>注册</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport"
          content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta name="format-detection" content="telephone=no">
    <meta name="renderer" content="webkit">
    <meta http-equiv="Cache-Control" content="no-siteapp"/>

    <link rel="stylesheet" href="./AmazeUI-2.4.2/assets/css/amazeui.min.css"/>
    <link href="./css/dlstyle.css" rel="stylesheet" type="text/css">
    <script src="./AmazeUI-2.4.2/assets/js/jquery.min.js"></script>
    <script src="./AmazeUI-2.4.2/assets/js/amazeui.min.js"></script>
    <script src="js/plugins/vue/dist/vue.js"></script>
    <script src="js/plugins/axios/dist/axios.js"></script>
    <script src="js/common.js"></script>
</head>

<body>

<div class="login-boxtitle">
    <a href="home/demo.html"><img alt="" src="./images/logobig.png"/></a>
</div>

<div class="res-banner">
    <div class="res-main">
        <div class="login-banner-bg"><span></span><img src="./images/big.jpg"/></div>
        <div class="login-box">
            <div class="am-tabs" id="doc-my-tabs">
                <ul class="am-tabs-nav am-nav am-nav-tabs am-nav-justify">
                    <li class="am-active"><a href="">邮箱注册</a></li>
                    <li><a href="">手机号注册</a></li>
                </ul>

                <div class="am-tabs-bd" id="app">
                    <div class="am-tab-panel am-active">
                        <form method="post">

                            <div class="user-email">
                                <label for="email"><i class="am-icon-envelope-o"></i></label>
                                <input type="email" name="" id="email" placeholder="请输入邮箱账号" v-model="emailForm.email">
                            </div>
                            <div class="user-pass">
                                <label for="password"><i class="am-icon-lock"></i></label>
                                <input type="password" name="" id="password" placeholder="设置密码"
                                       v-model="emailForm.password">
                            </div>
                            <div class="user-pass">
                                <label for="passwordRepeat"><i class="am-icon-lock"></i></label>
                                <input type="password" name="" id="passwordRepeat" placeholder="确认密码"
                                       v-model="emailForm.passwordRepeat">
                            </div>
                        </form>
                        <div class="login-links">
                            <label for="reader-me">
                                <input id="reader-me" type="checkbox" v-model="agree"> 点击表示您同意商城《服务协议》
                            </label>
                        </div>
                        <div class="am-cf">
                            <input type="button" name="" value="注册" class="am-btn am-btn-primary am-btn-sm am-fl"
                                   @click="emailGet">
                        </div>
                    </div>

                    <div class="am-tab-panel">
                        <form method="post">
                            <div class="user-phone">
                                <label for="phone"><i class="am-icon-mobile-phone am-icon-md"></i></label>
                                <input type="tel" name="" id="phone" v-model="phoneUserForm.phone" placeholder="请输入手机号">
                            </div>
                            <div class="user-phone">
                                <label for="imageCode"><i class="am-icon-check am-icon-sm"></i></label>
                                <input type="text" name="" style="width: 180px;" v-model="phoneUserForm.imageCode"
                                       id="imageCode" placeholder="请输入图片验证码">
                                <img id="captcha-image-temp" @click="getImageCode" :src="base64ImageCode"
                                     class="captcha-image-temp" alt="点击换图" title="点击换图"
                                     style="vertical-align: middle; cursor: pointer;">
                            </div>
                            <div class="verification">
                                <label for="code"><i class="am-icon-code-fork"></i></label>
                                <input type="tel" name="" id="code" v-model="phoneUserForm.phoneCode"
                                       placeholder="请输入验证码">
                                <button type="button" id="dyMobileButton" @click="sendMobileCode">获取</button>
                            </div>
                            <div class="user-pass">
                                <label for="password"><i class="am-icon-lock"></i></label>
                                <input type="password" name="" v-model="phoneUserForm.password" id="password"
                                       placeholder="设置密码">
                            </div>
                            <div class="user-pass">
                                <label for="passwordRepeat"><i class="am-icon-lock"></i></label>
                                <input type="password" name="" v-model="phoneUserForm.passwordRepeat"
                                       id="passwordRepeat" placeholder="确认密码">
                            </div>
                        </form>
                        <div class="login-links">
                            <label for="reader-me">
                                <input id="reader-me" type="checkbox" v-model="agree"> 点击表示您同意商城《服务协议》
                            </label>
                        </div>
                        <div class="am-cf">
                            <input type="button" name="" value="注册" class="am-btn am-btn-primary am-btn-sm am-fl"
                                   @click="phoneGet">
                        </div>
                        <hr>
                    </div>

                </div>
            </div>
        </div>
    </div>
    <div class="footer ">
        <div class="footer-hd ">
            <p>
                <a href="# ">恒望科技</a>
                <b>|</b>
                <a href="# ">商城首页</a>
                <b>|</b>
                <a href="# ">支付宝</a>
                <b>|</b>
                <a href="# ">物流</a>
            </p>
        </div>
        <div class="footer-bd ">
            <p>
                <a href="# ">关于恒望</a>
                <a href="# ">合作伙伴</a>
                <a href="# ">联系我们</a>
                <a href="# ">网站地图</a>
                <em>© 2015-2025 Hengwang.com 版权所有. 更多模板 <a href="http://www.cssmoban.com/" target="_blank" title="模板之家">模板之家</a>
                    - Collect from <a href="http://www.cssmoban.com/" title="网页模板" target="_blank">网页模板</a></em>
            </p>
        </div>
    </div>
</div>
<script>
    $(function () {
        $('#doc-my-tabs').tabs();
    })
</script>
<script>
    new Vue({
        el: '#app',
        data: {
            // base64编码之后的图形验证码字符串
            base64ImageCode: '',
            // base64编码之后的图形验证码前缀
            base64ImageCodePrefix: 'data:image/jpeg;base64,',
            // 同意协议
            agree: false,
            // 手机号注册表单
            phoneUserForm: {
                // 图片验证码
                imageCode: '',
                // 手机号
                phone: '',
                // 手机验证码
                phoneCode: '',
                // 密码
                password: '',
                // 确认密码
                passwordRepeat: ''
            },
            // 邮箱注册表单
            emailForm: {
                // 邮箱
                email: '',
                // 密码
                password: '',
                // 确认密码
                passwordRepeat: ''
            }
        },
        methods: {
            // 设置uuid
            createUuid() {
                var s = [];
                var hexDigits = "0123456789abcdefghi";
                for (var i = 0; i < 36; i++) {
                    s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
                }
                s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
                s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
                s[8] = s[13] = s[18] = s[23] = "-";

                var uuid = s.join("");
                return uuid;
            },
            // 获得图片验证码
            getImageCode() {
                //1.从localStorage中获取key：phoneRegisterCodeKey
                var key = localStorage.getItem("phoneRegisterCodeKey");
                //2.判断：为空就重新生成，不为空就直接使用 - 让key唯一
                if (!key) { //如果key没有值
                    key = this.createUuid();
                    localStorage.setItem("phoneRegisterCodeKey", key);
                }
                //3.发送异步请求并携带key
                this.$http.get("/verifyCode/image/" + key).then(res => {
                    //4.在回调函数获取响应的数据与拼接前缀 绑定到src
                    this.base64ImageCode = this.base64ImageCodePrefix + res.data.resultObj;
                })
            },
            // 发送验证码
            sendMobileCode() {
                // 判断手机号是否为空
                if (this.phoneUserForm.phone == '') {
                    alert('请输入手机号');
                    return;
                }
                // 判断图片验证码是否为空
                if (this.phoneUserForm.imageCode == '') {
                    alert('请输入图形验证码');
                    return;
                }
                // 获取按钮，禁用按钮  发送时灰化不能使用，发送成功倒计时60才能使用，如果发送失败立即可以发送
                var sendBtn = $(event.target);
                sendBtn.attr("disabled", true);
                // 请求参数
                var param = {
                    phone: this.phoneUserForm.phone,
                    imageCode: this.phoneUserForm.imageCode,
                    imageCodeKey: localStorage.getItem("phoneRegisterCodeKey")
                }
                // 发送异步请求
                this.$http.post("/verifyCode/smsCode", param).then((res) => {
                    if (res.data.success) {
                        // 倒计时60秒
                        var count = 60;
                        var timer = setInterval(() => {
                            count--;
                            if (count > 0) {
                                sendBtn.text(count);
                            } else {
                                sendBtn.text("发送");
                                sendBtn.attr("disabled", false);
                                // 清空计时器
                                clearInterval(timer);
                            }
                        }, 1000);
                    } else {
                        alert(res.data.msg);
                        sendBtn.attr("disabled", false);
                    }
                });
            },
            // 重置表单
            resetFields() {
                this.emailForm = {
                    email: '',
                    password: '',
                    passwordRepeat: ''
                };
                this.phoneUserForm = {
                    imageCode: '',
                    phone: '',
                    phoneCode: '',
                    password: '',
                    passwordRepeat: ''
                };
                this.agree = false;
            },
            // 邮箱注册提交
            emailGet() {
                if (this.emailForm.email == '') {
                    alert('邮箱不能为空');
                    return;
                }
                if (this.emailForm.password == '') {
                    alert('密码不能为空');
                    return;
                }
                if (this.emailForm.passwordRepeat == '') {
                    alert('确认密码不能为空');
                    return;
                }
                if (this.emailForm.password != this.emailForm.passwordRepeat) {
                    alert('两次密码不一致');
                    return;
                }
                if (!this.agree) {
                    alert('请您阅读并勾选同意《服务协议》');
                    return;
                }
                // 拷贝后面对象的值到新对象,防止后面代码改动引起模型变化
                // shop本身这个参数里面就有店铺和管理员信息
                let para = Object.assign({}, this.emailForm);
                //为了后台好接收，封装一个对象放到里面
                this.$http.post("/user/register/email", para).then((res) => {
                    if (res.data.success) {
                        location.href = "email_register.html";
                    } else {
                        this.$msg({
                            msg: res.data.msg,
                            type: 'error'
                        });
                    }
                });
            },
            // 手机注册提交
            phoneGet() {
                if (this.phoneUserForm.phone == '') {
                    alert('手机号不能为空');
                    return;
                }
                if (this.phoneUserForm.imageCode == '') {
                    alert('图形验证码不能为空');
                    return;
                }
                if (this.phoneUserForm.smsCode == '') {
                    alert('短信验证码不能为空');
                    return;
                }
                if (this.phoneUserForm.password == '') {
                    alert('密码不能为空');
                    return;
                }
                if (this.phoneUserForm.passwordRepeat == '') {
                    alert('确认密码不能为空');
                    return;
                }
                if (this.phoneUserForm.password != this.phoneUserForm.passwordRepeat) {
                    alert('两次密码不一致');
                    return;
                }
                if (!this.agree) {
                    alert('请您阅读并勾选同意《服务协议》');
                    return;
                }
                // 拷贝后面对象的值到新对象,防止后面代码改动引起模型变化
                let para = Object.assign({}, this.phoneUserForm);
                // 发送请求
                this.$http.post("/user/register/phone", para).then((res) => {
                    if (res.data.success) {
                        location.href = "phone_register.html";
                    } else {
                        alert(res.data.msg);
                    }
                });
            }
        },
        mounted() {
            // 自动加载图片验证码
            this.getImageCode();
        }
    })
</script>
</body>

</html>